package com.business.service;

import com.business.domain.*;
import com.sys.domain.AdminProvince;
import com.sys.domain.DictItem;
import com.sys.result.PageParam;
import com.sys.result.RequestPageVo;
import com.sys.result.RequestResultVo;
import com.sys.result.ResultVo;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


public interface CarService {

    /**
     * 分页查询车品牌
     */
    RequestPageVo<CarBrand> getBrandList(PageParam param, CarBrand brand);

    /**
     * 获取全部品牌
     *
     */
    List<CarBrand> getAllCarBrand();

    /**
     * 获取有车型的品牌
     *
     */
    List<CarBrand> getCarBrandByModel();

    /**
     * 添加或修改
     *
     */
    ResultVo saveOrUpdateBrand(CarBrand brand, MultipartFile contractFile);

    /**
     * 条件查询 车系
     *
     */
    RequestPageVo<CarSeriesVo> getSeriesList(PageParam param, CarSeries series);

    /**
     * 品牌id查询 车系
     */
    RequestPageVo<CarSeriesVo> getSeriesListByBrandId(Integer brandId);

    /**
     * 品牌id查询 车系有车型的车系
     */
    RequestPageVo<CarSeriesVo> getSeriesListByBrandIdAndModelId(Integer brandId);

    /**
     * 车系id查询 车型
     */
    RequestPageVo<CarModelVo> getModelListBySeriesId(Integer seriesId);

    /**
     * 添加或修改车系
     *
     */
    ResultVo saveOrUpdateSeries(CarSeries series);

    /**
     * 条件查询 车型
     *
     */
    RequestPageVo<CarModelVo> getModelList(PageParam param, CarModel model, Integer brandId);

    /**
     * 添加或修改车型
     *
     */
    ResultVo saveOrUpdateModel(CarModel model);

    /**
     * 根据id删除
     *
     */
    ResultVo deleteById(Integer id, String type);

    /**
     * 根据id恢复
     *
     */
    ResultVo backById(Integer id);


    /**
     * 根据编码获取字典值
     *
     */
    List<DictItem> getItemByCode(String code);

    /**
     * 根据id删除
     *
     */
    ResultVo deleteReaData(Integer id);

    /**
     * 添加车型价格
     *
     */
    ResultVo addPrice(Integer carModelId, Double price, String address);

    /**
     * 根据车型id查询该车型在各个地区的价格
     *
     */
    RequestPageVo<CarRefProvince> queryPriceByModelId(Integer carModelId);

    /**
     * 根基id 查看车型信息
     *
     */
    RequestResultVo<CarModelVo> getModelByModelId(Integer id, Integer provinceId);

    /**
     * 根据车型id查询该车型在各个地区的价格
     *
     */
    List<AdminProvince> getAllProvince();

    /**
     * 删除价格
     *
     */
    ResultVo deletePrice(Integer id);

    /**
     * 检验车型名字不能重复
     *
     */
    Boolean checkedModelName(Integer id, String name, Integer seriesId);

    /**
     * 车型优惠价格
     *
     */
    CarModelVo getPrice(CarModelVo model, Integer provinceId);

    /**
     * 车型库导出
     */
    HSSFWorkbook exportCar();
}
